Add a constructor to filesystem model that does not monitor a directory
authorBenjamin Otte <otte@gnome.org>
Wed, 24 Jun 2009 16:41:03 +0000 (18:41 +0200)
committerBenjamin Otte <otte@gnome.org>
Thu, 15 Oct 2009 20:00:09 +0000 (22:00 +0200)
This is in preparation for switching search and recent models to use
GtkFileSystemModel

gtk/gtkfilechooserdefault.c
gtk/gtkfilesystemmodel.c
gtk/gtkfilesystemmodel.h

index 67537537b8095b6297ce6b63cfb4b5601b51b7f0..d7ba26e5fe5c0856c704f42ca8fd65fd6719c260 100644 (file)
@@ -6927,7 +6927,7 @@ set_list_model (GtkFileChooserDefault *impl,
   gtk_tree_view_set_model (GTK_TREE_VIEW (impl->browse_files_tree_view), NULL);
 
   impl->browse_files_model = 
-    _gtk_file_system_model_new (impl->current_folder,
+    _gtk_file_system_model_new_for_directory (impl->current_folder,
         MODEL_ATTRIBUTES,
         file_system_model_set,
         impl,
index 8da4a0f21895f0f8525c8cfffd0334b22847b301..de89c6001d93592424d9aa25be097a08cbd3c33e 100644 (file)
@@ -1136,39 +1136,85 @@ gtk_file_system_model_set_directory (GtkFileSystemModel *model,
 
 }
 
+static GtkFileSystemModel *
+_gtk_file_system_model_new_valist (GtkFileSystemModelGetValue get_func,
+                                   gpointer            get_data,
+                                   guint               n_columns,
+                                   va_list             args)
+{
+  GtkFileSystemModel *model;
+
+  model = g_object_new (GTK_TYPE_FILE_SYSTEM_MODEL, NULL);
+  model->get_func = get_func;
+  model->get_data = get_data;
+
+  gtk_file_system_model_set_n_columns (model, n_columns, args);
+
+  return model;
+}
+
 /**
  * _gtk_file_system_model_new:
+ * @get_func: function to call for getting a value
+ * @get_data: user data argument passed to @get_func
+ * @n_columns: number of columns
+ * @...: @n_columns #GType types for the columns
+ *
+ * Creates a new #GtkFileSystemModel object. You need to add files
+ * to the list using _gtk_file_system_model_add_file().
+ *
+ * Return value: the newly created #GtkFileSystemModel
+ **/
+GtkFileSystemModel *
+_gtk_file_system_model_new (GtkFileSystemModelGetValue get_func,
+                            gpointer            get_data,
+                            guint               n_columns,
+                            ...)
+{
+  GtkFileSystemModel *model;
+  va_list args;
+
+  g_return_val_if_fail (get_func != NULL, NULL);
+  g_return_val_if_fail (n_columns > 0, NULL);
+
+  va_start (args, n_columns);
+  model = _gtk_file_system_model_new_valist (get_func, get_data, n_columns, args);
+  va_end (args);
+
+  return model;
+}
+
+/**
+ * _gtk_file_system_model_new_for_directory:
  * @directory: the directory to show.
  * @attributes: attributes to immediately load or %NULL for all
- * @error: location to store error, or %NULL.
  *
  * Creates a new #GtkFileSystemModel object. The #GtkFileSystemModel
  * object wraps the given @directory as a #GtkTreeModel.
- * The model will query the given @attributes immediately and only add 
- * files with those attributes present.
+ * The model will query the given directory with the given @attributes
+ * and add all files inside the directory automatically. If supported,
+ * it will also monitor the drectory and update the model's
+ * contents to reflect changes, if the @directory supports monitoring.
  * 
- * Return value: the newly created #GtkFileSystemModel object, or NULL if there
- * was an error.
+ * Return value: the newly created #GtkFileSystemModel
  **/
 GtkFileSystemModel *
-_gtk_file_system_model_new (GFile *                    dir,
-                           const gchar *              attributes,
-                            GtkFileSystemModelGetValue get_func,
-                            gpointer                   get_data,
-                            guint                      n_columns,
-                            ...)
+_gtk_file_system_model_new_for_directory (GFile *                    dir,
+                                          const gchar *              attributes,
+                                          GtkFileSystemModelGetValue get_func,
+                                          gpointer                   get_data,
+                                          guint                      n_columns,
+                                          ...)
 {
   GtkFileSystemModel *model;
   va_list args;
 
   g_return_val_if_fail (G_IS_FILE (dir), NULL);
-
-  model = g_object_new (GTK_TYPE_FILE_SYSTEM_MODEL, NULL);
-  model->get_func = get_func;
-  model->get_data = get_data;
+  g_return_val_if_fail (get_func != NULL, NULL);
+  g_return_val_if_fail (n_columns > 0, NULL);
 
   va_start (args, n_columns);
-  gtk_file_system_model_set_n_columns (model, n_columns, args);
+  model = _gtk_file_system_model_new_valist (get_func, get_data, n_columns, args);
   va_end (args);
 
   gtk_file_system_model_set_directory (model, dir, attributes);
index ae04e2f0ed1cf63497f106c3263fb10530b5a2ab..d27a6470075f1c6362c867228bad3b42d6cb3fa9 100644 (file)
@@ -42,7 +42,11 @@ typedef gboolean (*GtkFileSystemModelGetValue)   (GtkFileSystemModel *model,
                                                   GValue             *value,
                                                   gpointer            user_data);
 
-GtkFileSystemModel *_gtk_file_system_model_new              (GFile *             dir,
+GtkFileSystemModel *_gtk_file_system_model_new              (GtkFileSystemModelGetValue get_func,
+                                                             gpointer            get_data,
+                                                             guint               n_columns,
+                                                             ...);
+GtkFileSystemModel *_gtk_file_system_model_new_for_directory(GFile *             dir,
                                                              const gchar *       attributes,
                                                              GtkFileSystemModelGetValue get_func,
                                                              gpointer            get_data,